home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs03.d81
/
datafile.sfx
/
dfprint
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1990-02-12
|
9KB
|
278 lines
1500 REM DFPRINT FOR DATAFILE 2.9
1502 CLR:FL=0:PRINT"[147][158]":POKE53281,11:POKE53280,6:GOTO1530
1504 D$=CHR$(0):MR$=D$:DR$=D$:S=0:B1$=D$:PW=80:CW=0:B$=CHR$(32):RW=5:LW=32
1506 NC=0:NL=0:PG=0:F1=0:F2=0:F3=0:L$=D$:RL=0:SB$=D$:CR$=CHR$(13):HN$=D$:ID$=D$
1508 A$=D$:C$=D$:T%=6:I$=D$:CK=0:I=0:J=0:K=0:L=0:M=0:N=0:RW=5:SF=0:Z=0:E$="EOF"
1510 EN=0:EM$=D$:ET=0:ES=0:A1$=D$:A2$=D$:A3$=D$:S1$=D$
1512 DIMML$(9,4),PC(10),TT$(5),HC$(9)
1514 RETURN
1516 REM--DIMENSION BUFFER ARRAYS
1518 DIMF$(F+1),T%(F+1),L%(F+1),REC$(F+1):FL=1:RETURN
1520 REM--GET
1522 GETA$:IFA$=""THEN1522
1524 RETURN
1526 REM--START MENU
1528 PRINT"[147] DATAFILE FAST PRINT ":GOTO1548
1530 PRINT"[147] DATAFILE FAST PRINT "
1532 PRINT" BY MIKE KONSHAK (C)1985 "
1534 PRINT" THIS PROGRAM WILL PRINT A SEQUENTIAL"
1536 PRINT" FILE, WHICH WAS PREVIOUSLY WRITTEN"
1538 PRINT" AND FORMATTED BY DATAFILE[146], FIRECTLY"
1540 PRINT" TO THE PRINTER. THE ORDER OF THE"
1542 PRINT" RECORDS WILL BE THE SAME AS THE MOST"
1544 PRINT" RECENT SORT AS WRITTEN IN THE CURRENT"
1546 PRINT" FILE.[145]"
1548 PRINT" O[146]PEN FILE ON DISK"
1550 IFFL<>0THEN:PRINT" R[146]EPEAT FILE: ";NF$
1552 PRINT" $[146] DISK DIRECTORY"
1554 PRINT" Q[146]UIT PROGRAM"
1556 PRINT" PRESS THE APPROPRIATE KEY "
1558 GOSUB1522:IFA$="$"THEN1628
1560 IFA$="O"THEN1568
1562 IFA$="R"THEN1584
1564 IFA$="Q"THENCLOSE5:CLOSE15:CLOSE4:END
1566 GOTO1558
1568 REM--INPUT FILE NAME
1570 CLR:GOSUB1504:OPEN4,4
1572 PRINT" ENTER NAME OF DATAFILE TO BE READ"
1574 PRINT" ";NF$:INPUT"[145] ";NF$:IFNF$=""THEN1528
1576 OPEN15,8,15
1578 OPEN5,8,5,"0:DF] "+NF$+",S,R":GOSUB1618:IFEN=62THENGOSUB1620:GOTO1528
1580 CLOSE5:CLOSE15
1582 REM--PRINT RECORDS MENU
1584 PRINT"[147] RECORD PRINTOUT MENU "
1586 PRINT" L[146]IST UNFORMATTED"
1588 PRINT" R[146]EPORT FORMAT"
1590 PRINT" M[146]AILING LABELS"
1592 PRINT" C[146]HANGE LABEL SIZE"
1594 PRINT" S[146]END PRINTER COMMANDS"
1596 PRINT" E[146]XIT TO RESTART"
1598 PRINT" PRESS THE APPROPRIATE KEY "
1600 GOSUB1522:IFA$=""THEN1600
1602 IFA$="L"THENK=1:GOTO1730
1604 IFA$="R"THENK=2:GOTO1668
1606 IFA$="E"THEN1528
1608 IFA$="M"THENK=3:GOTO1704
1610 IFA$="C"THEN1940
1612 IFA$="S"THEN1978
1614 GOTO1600
1616 REM--DISK ERROR
1618 INPUT#15,EN,EM$,ET,ES:IF(EN<20)OR(EN=62)THENET=0:RETURN
1620 PRINT" [150]DISK ERROR[146]"EN"[157], "EM$","ET"[157],"ES"[158]":ET=8
1622 PRINT" PRESS ANY KEY[146] TO RESTART PROGRAM"
1624 GOSUB1522:CLOSE5:CLOSE15:RETURN
1626 REM--DIRECTORY
1628 OPEN15,8,15:OPEN5,8,0,"$0":PRINT"[147]":GOSUB1618:IFET=8THEN1528
1630 GET#5,A1$,A2$
1632 GET#5,A1$,A2$
1634 GET#5,A1$,A2$
1636 IFA1$<>""THENA0=ASC(A1$)
1638 IFA2$<>""THENA0=A0+ASC(A2$)*256
1640 PRINTMID$(STR$(A0),2);TAB(3);
1642 GET#5,A2$:IFST<>0THEN1660
1644 IFA2$<>CHR$(34)THEN1642
1646 GET#5,A2$:IFA2$<>CHR$(34)THENPRINT""A2$"[146]";:GOTO1646
1648 GET#5,A2$:IFA2$=CHR$(32)THEN1648
1650 PRINTTAB(20);:A3$=""
1652 A3$=A3$+A2$:GET#5,A2$:IFA2$<>""THEN1650
1654 PRINTLEFT$(A3$,3)
1656 GETA$:IFA$<>""THENGOSUB1664
1658 IFST=0THEN1632
1660 PRINT" BLOCKS FREE";:A0=0
1662 CLOSE5:CLOSE15:PRINTTAB(25)"PRESS ANY KEY[146]":GOSUB1522:GOTO1528
1664 GOSUB1522:RETURN
1666 REM--LOAD REPORT FORMAT
1668 PRINT" NAME OF REPORT FORM AT FILE?"
1670 PRINT" ";NF$:INPUT"[145] ";RF$:IFRF$=""THEN1528
1672 OPEN15,8,15:OPEN5,8,5,"0:RP] "+RF$+",S,R":GOSUB1618:IFET=8THEN1528
1674 IFEN=62THENGOSUB1618:GOTO1528
1676 INPUT#5,PW,NL,NC:GOSUB1618:IFET=8THEN1528
1678 FORJ=1TONL
1680 INPUT#5,TT$(J):GOSUB1618:IFET=8THEN1528
1682 NEXTJ
1684 FORI=1TONC
1686 INPUT#5,PC(I),HC$(I):GOSUB1618:IFET=8THEN1528
1688 FORN=1TO3
1690 INPUT#5,ML$(I,N):GOSUB1618:IFET=8THEN1528
1692 NEXTN:NEXTI:INPUT#5,A1$:Z=VAL(A1$)
1694 S=ST:IFS<>0THEN1698
1696 INPUT#5,E$
1698 CLOSE5:CLOSE15
1700 GOTO1730
1702 REM--LOAD MAILING LABEL FORMAT
1704 PRINT" NAME OF MAILING LABEL FORMAT FILE?"
1706 PRINT" ";NF$:INPUT"[145] ";MF$:IFMF$=""THEN1528
1708 OPEN15,8,15:OPEN5,8,5,"0:ML] "+MF$+",S,R":GOSUB1618:IFET=8THEN1528
1710 IFEN=62THENGOSUB1620:GOTO1528
1712 INPUT#5,RW
1714 FORI=1TORW:FORN=1TO3
1716 INPUT#5,ML$(I,N):GOSUB1618:IFET=8THEN1528
1718 NEXTN
1720 NEXTI
1722 S=ST:IFS<>0THEN1726
1724 INPUT#5,E$
1726 CLOSE5:CLOSE15
1728 REM--OPEN DATAFILE CHANNEL
1730 OPEN15,8,15:OPEN5,8,5,"0:DF] "+NF$+",S,R":GOSUB1618:IFET=8THEN1528
1732 IFEN=62THENGOSUB1620:GOTO1528
1734 INPUT#5,R,F,X:GOSUB1618:IFET=8THEN1528
1736 IFFL=0THENGOSUB1518:REM DIMENSION ARRAYS AND BUFFER
1738 FORN=1TOF:INPUT#5,F$(N),L%(N):NEXTN:GOSUB1618:IFET=8THEN1528
1740 REM--SEARCH ROUTINES MENU
1742 A0=0:PRINT"[147] PRINT OPTIONS MENU "
1744 PRINT" A[146]LL RECORDS IN FILE
1746 [153]" FWAITIND RECORDS WITH COMMON FIELDS
1748 IFK=3THENPRINT" T[146]EST LABEL(S)"
1750 PRINT" E[146]XIT BACK TO START"
1752 IFK=2THENPRINT"POSITION PAPER IN PRINTER AT TOP OF PAGE"
1754 PRINT" PRESS THE APPROPRIATE KEY "
1756 GETC$:IFC$=""THEN1756
1758 IFC$="A"THEN1806
1762 IFC$="T"THEN1918
1764 IFC$="F"THEN1772
1766 IFC$="E"THENCLOSE5:CLOSE15:GOTO1528
1768 GOTO1756
1770 REM--FIND RECORD (SEARCH)
1772 PRINT"[147] FIND RECORDS WITH COMMON ITEMS "
1774 FORN=1TOF:PRINT" ";N;"[146] ";F$(N):NEXTN
1776 INPUT" WHICH FIELD IS TO BE SEARCHED";SF
1778 IFSF<0ORSF>FTHENPRINT"[145][145][145]":GOTO1776
1780 PRINT" ENTER COMMON ITEM[146] ":PRINT" (THE ENTIRE STRING IS NOT REQUIRED)"
1782 PRINT" ";F$(SF);"[146] ";:INPUTT$
1784 IFK=2THENGOSUB1838:GOSUB1852
1786 FORI=1TOX
1788 PRINT" SEARCHING RECORD";I;"[145][145]"
1790 FORN=1TOF:INPUT#5,REC$(N):NEXTN:GOSUB1618:IFET=8THEN1528
1792 IFT$=LEFT$(REC$(SF),LEN(T$))THENONKGOSUB1826,1870,1928
1794 IFK=2THENGOSUB1904
1796 NEXTI
1798 CLOSE5:CLOSE15
1800 IFK=2THEN1906
1802 GOTO1528
1804 REM--PRINT ALL RECORDS
1806 PRINT" PRINTING HEADING":IFK=2THENGOSUB1838:GOSUB1852
1808 FORI=1TOX:PRINT"[145] READING RECORD #";I
1810 FORN=1TOF:INPUT#5,REC$(N):NEXTN:GOSUB1618:IFET=8THEN1528
1812 ONKGOSUB1826,1870,1928
1814 IFK=2THENGOSUB1904
1816 NEXTI
1818 CLOSE5:CLOSE15
1820 IFK=2THEN1906
1822 GOTO1528
1824 REM--PRINT NONFORMATTED LISTING
1826 PRINT#4,"[ RECORD #";I;" ]";:FORJ=1TO62:PRINT#4,"-";:NEXTJ:PRINT#4,B1$
1828 FORN=1TOF
1830 PRINT#4,F$(N);:FORJ=1TO20-LEN(F$(N)):PRINT#4,".";:NEXTJ
1832 PRINT#4,REC$(N)
1834 NEXTN:PRINT#4,B1$:RETURN
1836 REM--PRINT REPORT
1838 PG=0:S$="":FORJ=1TOPW:S$=S$+B$:NEXTJ
1840 FORJ=1TONL:IFTT$=(J)<>">"THENGOSUB1846
1842 NEXTJ:RETURN
1844 REM--CENTER TITLE
1846 B=INT((PW-LEN(TT$(J)))/2)
1848 PRINT#4,LEFT$(S$,B)+TT$(J);B1$:PG=PG+1:RETURN
1850 REM--POSITION HEADINGS
1852 GOSUB1866:PC(NC+1)=PW+3:CW=PC(2)-2-PC(1):IFPC(1)>1THEN1856
1854 PRINT#4,LEFT$(HC$(1),CW);:GOTO1858
1856 PRINT#4,LEFT$(S$,PC(1)-1)+LEFT$(HC$(1),CW);
1858 FORJ=2TONC:M=PC(J)-LEN(LEFT$(HC$(J-1),PC(J)-2-PC(J-1)))-PC(J-1)
1860 PRINT#4,LEFT$(S$,M)+LEFT$(HC$(J),PC(J+1)-2-PC(J));
1862 NEXTJ:PRINT#4,B1$:GOSUB1866:PG=PG+3:RETURN
1864 REM--PRINT DASHED LINE
1866 FORJ=1TOPW:PRINT#4,"-";:NEXTJ:PRINT#4,B1$:RETURN
1868 REM--PRINT REPORT FILE DATA
1870 F1=VAL(ML$(1,1)):F2=VAL(ML$(1,2)):F3=VAL(ML$(1,3)):CW=PC(2)-2-PC(1)
1872 IFPC(1)>1THEN1878
1874 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW);
1876 GOTO1882
1878 PRINT#4,LEFT$(S$,PC(1)-1);
1880 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW);
1882 FORJ=2TONC:CW=PC(J)-2-PC(J-1)
1884 F1=VAL(ML$(J-1,1)):F2=VAL(ML$(J-1,2)):F3=VAL(ML$(J-1,3))
1886 M=LEN(LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW))
1888 M=PC(J)-M-PC(J-1):CW=PC(J+1)-2-PC(J)
1890 PRINT#4,LEFT$(S$,M);
1892 F1=VAL(ML$(J,1)):F2=VAL(ML$(J,2)):F3=VAL(ML$(J,3))
1894 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW);
1896 NEXTJ:PRINT#4,B1$:PG=PG+1
1898 IFPG=60THENFORJ=1TO6:PRINT#4,B1$:NEXTJ:PG=0:GOSUB1852
1900 RETURN
1902 REM--SUM LAST COLUMN
1904 IFZ<>1THENRETURN
1905 A0=A0+VAL(REC$(VAL(ML$(NC,1)))):RETURN
1906 IFZ<>1THENPRINT#4,B1$:GOTO1528
1908 PRINT#4,LEFT$(S$,PC(NC)-1);
1910 FORI=1TOPW-PC(NC)+1:PRINT#4,"-";:NEXTI:PRINT#4,B1$
1912 PRINT#4,LEFT$(S$,PC(NC)-9)+"TOTAL= "+STR$(A0)
1914 PRINT#4,B1$:GOTO1528
1916 REM--PRINT SAMPLE LABELS
1918 PRINT" PRINTING TEST LABEL"
1920 FORI=1TORW:FORJ=1TOLW:PRINT#4,RIGHT$(STR$(J),1);:NEXTJ:PRINT#4,B1$:NEXTI
1922 FORI=1TOT%-RW:PRINT#4,B1$:NEXTI
1924 GOTO1742
1926 REM--PRINT LABELS
1928 FORJ=1TORW:F1=VAL(ML$(J,1)):F2=VAL(ML$(J,2)):F3=VAL(ML$(J,3))
1930 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),LW)
1932 NEXTJ
1934 FORS=1TOT%-RW:PRINT#4,B1$:NEXTS
1936 RETURN
1938 REM--CHOOSE LABEL SIZE
1940 PRINT"[147] LABEL SIZE [146]"
1942 PRINT" S[146]TANDARD - 5 ROWS PER LABEL"
1944 PRINT" 15/16 INCH BY 3 1/2 INCHES"
1946 PRINT" L[146]ARGE - 8 ROWS PER LABEL"
1948 PRINT" 1 7/16 INCH BY 3 1/2 INCHES"
1950 PRINT" O[146]THER - CUSTOM LABEL SIZE OR"
1952 PRINT" NUMBER OF CHARACTERS PER ROW"
1954 PRINT" NOTE: LABELS ARE SEPARATED BY ONE ROW"
1956 PRINT" 32 CHARACTERS PER ROW IS STANDARD"
1958 PRINT" PRESS THE APPROPRIATE KEY "
1960 GETC$:IFC$=""THEN1960
1962 IFC$="S"THENT%=6:RW=5:LW=32:GOTO1584
1964 IFC$="L"THENT%=9:RW=8:LW=32:GOTO1584
1966 IFC$="O"THEN1970
1968 GOTO1960
1970 INPUT" ENTER NUMBER OF ROWS ON LABEL";RW:T%=RW+1
1972 INPUT" ENTER # OF CHARACTERS PER ROW";LW
1974 GOTO1584
1976 REM--SEND PRINTER CODES
1978 PRINT"[147] PRINTER COMMAND [146]"
1980 PRINT" THIS ROUTINE WILL SEND CHARACTER"
1982 PRINT" STRING [CHR$()] COMMANDS TO AN ASCII"
1984 PRINT" PRINTER. COMMANDS MUST BE ENTERED IN"
1986 PRINT" THE FORM OF INTEGERS SUCH AS:"
1988 PRINT" ? 27 (ESCAPE CODE)"
1990 PRINT" ? 66 (PITCH CODE)"
1992 PRINT" ? 2 (COMPRESSED MODE)"
1994 PRINT" ? * (END THE SEQUENCE)"
1996 PRINT" THIS WILL BE SENT TO THE PRINTER AS:"
1998 PRINT" PRINT#4,CHR$(27)CHR$(66)CHR$(2)"
2000 PRINT" UP TO FOUR(4) NUMBERS MAY BE SENT,"
2002 PRINT" THE FIRST NORMALLY BEING 27[146], THE"
2004 PRINT" ESCAPE CHARACTER. END THE SEQUENCE"
2006 PRINT" IS SHOWING. PRINTERS WILL VARY, SO"
2008 PRINT" IS SHOWING. PRINTERS WILL VARY, SO"
2010 PRINT" CHECK YOUR MANUAL FOR THE CODES."
2012 PRINT" ANY KEY[146] TO CONTINUE OR E[146]XIT?"
2014 GOSUB1522:IFA$="E"THEN1584
2016 PRINT"[147] SEND PRINTER COMMAND [146]"
2018 PRINT" ENTER CODE, THEN PRESS RETURN[146]"
2020 PRINT" RETURN[146] ONLY TO QUIT"
2022 FORI=1TO4:PRINT"CODE";I;" ? * [157][157][157][157]";:INPUTI$(I)
2024 IFI$(I)="*"THEN2028
2026 NEXTI
2028 ONIGOTO2030,2032,2034,2036
2030 PRINT#4,CHR$(VAL(I$(1))):GOTO2038
2032 PRINT#4,CHR$(VAL(I$(1)))CHR$(VAL(I$(2))):GOTO2038
2034 PRINT#4,CHR$(VAL(I$(1)))CHR$(VAL(I$(2)))CHR$(VAL(I$(3))):GOTO2038
2036 PRINT#4,CHR$(VAL(I$(1)))CHR$(VAL(I$(2)))CHR$(VAL(3)))CHR$(VAL(I$(4)))
2038 PRINT" A[146]NOTHER CODE"
2040 PRINT" T[146]EST CHANGE"
2042 PRINT" E[146]XIT TO PRINT"
2044 PRINT" PRESS THE APPROPRIATE KEY "
2046 GOSUB1522:IFA$="A"THEN2016
2048 IFA$="T"THENPRINT#4,"ABCDEFGHIJKLMNOPQRSTUVWXYZ":GOTO2046
2050 IFA$="E"THEN1584
2052 GOTO2046